package com.itheima.datasource;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidPooledConnection;
import com.itheima.domain.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;


//第一个是从IOC中取出来的.
//第二个是在IOC外面手动创建的
public class Demo {
    @Test
    public void testSpringDruid() throws SQLException {
        ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
        DataSource ds = ac.getBean("datasource", DataSource.class);
        //测试
        Connection con = ds.getConnection();
        System.out.println(con);
    }
    @Test
    public void testDruid() throws SQLException {
        //创建数据源对象
        DruidDataSource ds = new DruidDataSource();
        //配置连接数据库的四大基本特征
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        ds.setUrl("jdbc:mysql:///db4");
        ds.setUsername("root");
        ds.setPassword("root");
        //测试
        DruidPooledConnection cn = ds.getConnection();
        System.out.println(cn);
    }

    @Test
    public void testJdbcTemplate(){
        // 创建JdbcTemplate对象
        //1.构造函数带有数据源
        ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
        JdbcTemplate jt = ac.getBean("jdbcTemplate", JdbcTemplate.class);
        //JdbcTemplate对象创建成功与否跟有没有脸上数据库是没有关系的
        //换句话说就算没脸上数据库,也可以成功创建JdbcTemplate


        List<User> list = jt.query("select * from user", new BeanPropertyRowMapper<User>(User.class));
        System.out.println(list);
        // 2.set方法设置数据源

    }
}
